iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
自我挑戰組

c 語言與 python 的30天之旅系列 第 18

C 語言與全排列

  • 分享至 

  • xImage
  •  
#include<stdio.h>
int a[10],book[10],n;
// C 語言的全域變數初始值為 0
void dfs(int step)  // 
{
	int i;
	if(step==n+1)  //表示 n 個數字已經排列完畢了
	{
		for(i=1;i<=n;i++)  // 輸出一種排列
			printf("%d",a[i]);
		printf("\n");
		return;  // 返回 最近呼叫 dfs 的地方
	} 
	/* 此時在第 step 個數字 依照1、2、3...n 的順序嘗試 */
	for(i=1;i<=n;i++)
	{
		/* 判斷數字 i 是否已排列 */
		if(book[i]==0)  // 等於 0 表示未排列
		{
				a[step]=i;  // 將數字 i 排列到第 step 數字
			book[i]=1;  // 設為 1 表示 i 數字已排列
			/* 第 step 個數字已排列 接下來要排列第 step+1 個數字 */
			dfs(step+1);  //使用遞迴呼呼叫
			book[i]=0;  // 將數字 i 回復到未排列
		} 
	}
	return; 
} 

int main()
{
	scanf("%d",&n);  //n 為1~9 之間的整數
	dfs(1);  //
	return 0; 
}

上一篇
C 語言與狀態機
下一篇
python 與物件導向
系列文
c 語言與 python 的30天之旅24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言